package com.example.common.filters;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

/**
 * @Author zwp14
 * @create 2024/6/12 15:53
 * @description 过滤器
 */
@WebFilter(urlPatterns = "/*")
public class MyFilter implements Filter {
    /**
     * @param filterConfig 过滤器配置信息
     * @deprecated 初始化方法, 只调用一次
     */
    @Override
    public void init(FilterConfig filterConfig) {
        System.out.println("init 初始化方法执行了");
    }

    /**
     * @param request servlet请求信息
     * @param response servlet响应信息
     * @param chain 过滤器链-允许在请求到达目标 Servlet之前和响应离开 Servlet 之后进行一些预处理或后处理操作
     * @throws IOException 输入输出错误的基础异常
     * @throws ServletException servlet操作异常
     * @description 拦截到请求之后调用, 调用多次
     */
    @Override
    public void doFilter(ServletRequest request,
                         ServletResponse response,
                         FilterChain chain) throws IOException, ServletException {
        System.out.println("Demo 拦截到了请求...放行前逻辑");
        //放行
        chain.doFilter(request, response);
        System.out.println("DemoFilter   放行后逻辑.....");
    }

    /**
     * @description 销毁方法, 只调用一次
     */
    @Override
    public void destroy() {
        System.out.println("destroy 销毁方法执行了");
    }
}
